﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Misc.Common.Exceptions
{
	/// <summary>
	/// Содержит исключение с сопутствующей информацией
	/// </summary>
	public class ExceptionDescription
	{
		private Exception _exceptionObject;
		private bool      _Terminating;
		private bool      _unhandled;
		private object    _source;

		/// <summary>
		/// Конструктор
		/// </summary>
		/// <param name="Source">Объект-источник исключения</param>
		/// <param name="e">Исключение</param>
		/// <param name="Terminating">Прерывает ли исключение работу программы</param>
		/// <param name="Unhandled">Является ли исключение не пойманным</param>
		public ExceptionDescription(object Source, Exception e, bool Terminating, bool Unhandled) 
		{
			this._source = Source;
			this._exceptionObject = e;
			this._Terminating = Terminating;
			this._unhandled = Unhandled;
		}

		/// <summary>
		/// Конструктор описателя исключения
		/// </summary>
		/// <param name="e">Исключение</param>
		public ExceptionDescription(Exception e) : this(null, e, false, false) { }

		/// <summary>Исключение</summary>
		public Exception ExceptionObject 
		{
			get { return _exceptionObject; }
		}
		/// <summary>Является ли исключение не пойманным</summary>
		public bool Unhandled 
		{
			get { return _unhandled; }
		}

		/// <summary>Прерывает и исключение работу программы</summary>
		public bool Terminating 
		{
			get { return _Terminating; }
		}

		/// <summary>Объект-источник исключения</summary>
		public object Source 
		{
			get { return _source; }
		}
	}
}
